package leetcode.code1147;

/**
 * 双指针 # <br>
 * 难点 : 语文题
 *
 * @author CaoYu
 * @date 2021年10月10日
 * @description
 */
public class Solution extends Solution1147 {

	@Override
	public int longestDecomposition(String text) {
		// (a)(nt)(a)(pre)(za)(tpe)(za)(pre)(a)(nt)(a)
		int len = text.length();
		int l = 0;// 左侧边界
		int r = len - 1;// 右侧边界
		int p = 0;// 探针
		int ans = 0;// 答案
		char[] arr = text.toCharArray();
		while (p <= r) {
			if (arr[p] != arr[r]) {
				p++;
			} else {
				int size = p - l + 1;
				String str1 = new String(arr, l, size);
				String str2 = new String(arr, r - size + 1, size);
				if (str1.equals(str2)) {
					// 找到一段匹配`段`, 不是中间的那一段+2,中间那一段+1
					ans += p == r ? 1 : 2;
					p++;
					l = p;// 缩小范围
					r = r - size;
				} else {
					p++;
				}
			}
		}
		return ans;
	}

	public static void main(String[] args) {
		Solution so = new Solution();
		so.debug1();
		so.debug2();
		so.debug3();
		so.debug4();

	}

}
